package com.yiwyn;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
public class Main {

    public static void main(String[] args) {

        String before = "各位领导、同事：\n" +
                "     【LCV优选秒贷】、【LCV新能源秒贷】、 【新能源一手车秒贷V2.0】、【一手车优选秒贷】这四个产品下部分专案已控制“开瑞”品牌不可用\n" +
                "    具体所涉及的专案明细详见附件\n" +
                "请各位知悉并传达，如有任何疑问烦请反馈企业微信【系统维护沟通群】";

        // 原文转unicode
        String s = stringToUnicodeString(before);
        System.out.println(s);

        // 替换标准空格
        String replace = s.replace("\\u00a0", "\\u0020");

        // unicode 转string
        String s1 = unicode2String(replace);
        System.out.println(s1);

        String after = "各位领导、同事：\n" +
                "     【LCV优选秒贷】、【LCV新能源秒贷】、 【新能源一手车秒贷V2.0】、【一手车优选秒贷】这四个产品下部分专案已控制“开瑞”品牌不可用\n" +
                "    具体所涉及的专案明细详见附件\n" +
                "请各位知悉并传达，如有任何疑问烦请反馈企业微信【系统维护沟通群】";
    }


    /**
     * 将字符串转换为 Unicode 转义序列的字符串
     *
     * @param input 输入的字符串
     * @return 转换为 Unicode 转义序列的字符串
     */
    public static String stringToUnicodeString(String input) {
        if (input == null) {
            throw new IllegalArgumentException("输入字符串不能为 null");
        }

        StringBuilder unicodeString = new StringBuilder();
        for (char c : input.toCharArray()) {
            // 将字符转换为 Unicode 转义序列
            unicodeString.append(String.format("\\u%04x", (int) c));
        }
        return unicodeString.toString();
    }


    /**
     * 将 Unicode 转义序列的字符串转换回原始字符串
     *
     * @return 原始字符串
     */
    public static String unicodeToString(String input) {
        Pattern pattern = Pattern.compile("\\\\u([0-9a-fA-F]{4})");
        Matcher matcher = pattern.matcher(input);
        StringBuffer sb = new StringBuffer();
        while (matcher.find()) {
            String code = matcher.group(1);
            char ch = (char) Integer.parseInt(code, 16);
            matcher.appendReplacement(sb, String.valueOf(ch));
        }
        matcher.appendTail(sb);
        return sb.toString();
    }


    /**
     * unicode 转字符串
     * @param unicode 全为 Unicode 的字符串
     * @return
     */
    public static String unicode2String(String unicode) {
        StringBuilder builder = new StringBuilder();
        String[] hex = unicode.split("\\\\u");

        for (int i = 1; i < hex.length; i++) {
            // 转换出每一个代码点
            int data = Integer.parseInt(hex[i], 16);
            // 追加成string
            builder.append((char) data);
        }

        return builder.toString();
    }

}